feat(api): tren-e — TENANT-001 T3: tenant-scope /api/plan + /api/terminal yüzeylerinde - #95
Closed
AlbSar wants to merge 6 commits into
Closed
feat(api): tren-e — TENANT-001 T3: tenant-scope /api/plan + /api/terminal yüzeylerinde#95AlbSar wants to merge 6 commits into
AlbSar wants to merge 6 commits into
Conversation
…enant-scope Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…inal yüzeylerinde Kalan iki merkezi NULL-tenant sitesi kapatıldı: /api/plan ingress'i ve /api/terminal/* (kabuk erişimi taşıdığı için tenant sınırının en duyarlı yüzeyi). İkisi de T2'nin resolveApiCallerTenant kararına bağlandı — strict AÇIK: tenant-claim'siz çağıran 403; strict KAPALI: v1 bayt-değişmez. Doğrulama notu: patch'lenen ilk site 410 ile emekli /api/start DEĞİL, canlı /api/plan uçudur (kontrol edildi — ölü koda kablo çekilmedi). Kanıt: 2 yeni resolver-kontrat pini (strict/permissive/tenant'lı + bozuk-config fail-soft), api sınıfı yeşil, tsc temiz. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…consumed Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…otalarıyla sınırlı T4 ön-kontrolü iki gerçeği ortaya çıkardı; ikisi de T3'ün ifadesini daraltıyor: 1. WS upgrade HTTP handler'ından geçmiyor. attachTerminalGateway server'a 'upgrade' dinleyicisi olarak takılıyor, yani T3'te gated ettiğim /api/terminal/* HTTP rotasının dışında. Token-only auth'ta authTenant 'local' kalıyor → HTTP'de 403 alan çağıran WS üzerinden kabuk alabilir. 2. Senkron readStrictTenantIsolation yalnız proje config'ini okuyor; loadConfig defaults→global→project zinciri kuruyor. Global katmanda strict açan operatörde T2/T3'ün bağladığı 6 site sessizce permissive. Bu, 'raporlar-ama-kapatmaz kontrol' sınıfının ÜÇÜNCÜ örneği. Satır 4020 hâlâ VERIFY — hiçbir DONE iddiası şişirilmedi; yine de ifadeyi main'e düzeltilmemiş sokmamak için kapsam cümlesi daraltıldı ve kalan iş T4a/T4b/T4c olarak adlandırıldı. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ne yapıldı (düz Türkçe)
Kiracı (tenant) sınırının kalan iki merkezi API girişi kapatıldı:
/api/plan— plan/koşu başlatma girişi/api/terminal/*— kabuk (shell) erişimi taşıdığı için sınırın en duyarlı yüzeyiİkisi de daha önce çağıranın tenant iddiası yokken sessizce
'local'kiracısına düşüyordu.Artık T2'de kurulan ortak
resolveApiCallerTenantkararına bağlılar:strict_tenant_isolationAÇIK → tenant iddiası olmayan çağıran 403 alır (fail-closed)'local')Doğrulama notu (ölü-kod kontrolü)
Patch'lenen ilk site 410 ile emekli
/api/startdeğil, canlı/api/planucudur — kontroledildi, ölü koda kablo çekilmedi.
Kanıt
'local', tenant'lı çağıran,config yok → permissive, bozuk config → fail-soft permissive (sessiz sertleşme yok)
tests/api/sınıfı: 105 dosya / 1027 test yeşilnpx tsc --noEmittemiz ·npm run lint:gatestam zincir yeşilMakbuz zinciri
GR-2026-08-07-TENANT-T3-01— admission → consumedGR-2026-08-07-T3-SUPP-01— mekanik baseline + rozet tazeleme → consumedMASTER-PLAN satır 4020 (TENANT-001) T3 settlement'ı ile güncellendi; kalan kapsam CLI+MCP
yüzeyleri ve tam IDOR matrisi (T4).
🤖 Generated with Claude Code